import {mapGetters} from 'vuex';
import {Message} from "element-ui";

export const mixin = {
  computed: {
    ...mapGetters([
      'loginIn',              //用户是否已登录
      'userId',               //当前登录用户的id
    ])
  },
  methods: {
    //提示信息
    notify(title, type) {
      this.$notify({
        title: title,
        type: type
      })
    },
    //根据歌手名字模糊查询歌曲
    getSong() {
      if (!this.$route.query.keywords) {
        this.$store.commit('setListOfSongs', []);
        this.notify('您输入的内容为空','warning');
        // Message.warning('您输入的内容为空')
      } else {
        this.getRequest('/user/song/like/' + this.$route.query.keywords).then(res => {
          if (!res.length) {
            this.$store.commit('setListOfSongs', []);
            this.notify('系统暂无符合条件的歌曲','warning');
            // Message.warning('系统暂无符合条件的歌曲')
          } else {
            this.$store.commit('setListOfSongs', res);
          }
        }).catch(err => {
          console.log(err)
        })
      }
    },
    //获取名字前半部分--歌手名
    replaceLName(str) {
      let arr = str.split('-');
      return arr[0];
    },
    //获取名字后半部分--歌名
    replaceFName(str) {
      let arr = str.split('-');
      return arr[1];
    },
    //播放
    toplay: function (id, url, pic, index, name, lyric) {
      this.$store.commit('setId', id);
      this.$store.commit('setUrl', url);
      this.$store.commit('setPicUrl', pic);
      this.$store.commit('setListIndex', index);
      this.$store.commit('setTitle', this.replaceFName(name));
      this.$store.commit('setArtist', this.replaceLName(name));
      this.$store.commit('setLyric', this.parseLyric(lyric));
      this.$store.commit('setIsActive', false);
      if (this.loginIn) {
        // 添加播放记录 包括歌曲播放记录和该歌曲标签的播放记录
        this.putRequest('/record/' + id)
        // 判断该用户有没有收藏该播放的歌曲
        this.getRequest('/user/star/' + this.userId).then(res => {
          for (let item of res) {
            if (item.songId == id) {
              this.$store.commit('setIsActive', true);
              break;
            }
          }
        })
      }
    },
    //解析歌词
    parseLyric(text) {
      if(text == '[00:00:00]暂无歌词'){
        return [];
      }
      let lines = text.split("\n");                   //将歌词按行分解成数组
      let pattern = /\[\d{2}:\d{2}.(\d{3}|\d{2})\]/g; //时间格式的正则表达式
      let result = [];                                //返回值
      //对于歌词格式不对的直接返回
      if (!(/\[.+\]/.test(text))) {
        return [[0, text]]
      }
      //去掉前面格式不正确的行
      while (!pattern.test(lines[0])) {
        lines = lines.slice(1);
      }
      //去掉后面格式不正确的行
      while(!pattern.test(lines[lines.length-1])){
        lines = lines.slice(0,lines.length-1)
      }
      //遍历每一行，形成一个每行带着俩元素的数组，第一个元素是以秒为计算单位的时间，第二个元素是歌词
      for (let item of lines) {
        let time = item.match(pattern);  //存前面的时间段
        let value = item.replace(pattern, '');//存后面的歌词
        for (let item1 of time) {
          let t = item1.slice(1, -1).split(":");   //取出时间，换算成数组
          if (value != '') {
            result.push([parseInt(t[0], 10) * 60 + parseFloat(t[1]), value]);
          }
        }
      }
      //按照第一个元素--时间--排序
      result.sort(function (a, b) {
        return a[0] - b[0];
      });
      return result;
    },
    //获取生日
    attachBirth(val) {
      return val.substr(0, 10);
    }
  }
}
